約 2,913,178 件
https://w.atwiki.jp/tracking_quizshow/pages/107.html
問題 問題画像 問題文 次の暗号を解読してください。使用可能文字は「漢字、数字、英文字、ひらがな」。175 47 14728 125 158728 5 45178 472 12754725 157 回答 解説 補足 Big/bq086と同じ問題です
https://w.atwiki.jp/bemani2sp/pages/3953.html
GENRE TITLE ARTIST bpm notes CLEAR RATE DRUMSTEP BIGソムタム AJURIKA 187 1688 n%(yyyy/mm/dd) 攻略・コメント 8分皿+同時がメインの譜面。皿が多いわけでも基盤が濃いわけでもないから今作☆12中では1番易しそう。正規でも無難に押しやすい。 -- 名無しさん (2020-11-19 12 13 28) mosaicから軸を少し抜いて皿を増やしたような平坦な譜面。mosaicより地力寄りな同時押しと皿譜面 -- 名無しさん (2020-11-19 16 53 30) 皆伝平均モザイクの次くらいに高くなりそう 短CNはふつうの単押しの感覚で押せば繋がる -- 名無しさん (2020-11-19 18 35 12) 正規、ミラーが無難。スコアも出しやすくておススメ。 -- 名無しさん (2020-11-19 19 56 44) 前半は結構強め。正規系はかなりきれい。 -- 名無しさん (2020-11-19 20 11 28) mosaicじゃなくてBeat Radiance†を少しぬるくした感じ。最後二重階段でゲージ溶かしにくるがその後まだ同時あるから削られすぎなければノマゲまで行ける -- 名無しさん (2020-11-19 20 19 10) 前半はダイナマイトとかトライアンフ系の配置だがそれらよりは緩め。後半はただの同時押し譜面でもう一段階難易度が落ちるためデフォ12の中ではクリア・スコア共に楽な方 -- 名無しさん (2020-11-22 13 40 59) ランプ狙いでランダムかけるのは結構危険なので正規系が無難。 -- 名無しさん (2020-11-22 13 59 08) トライアンフとTtAを足して2で割ったような印象だった。1P鏡2P正規が当たってるように感じたけどCNやら皿や二重階段の好みで正規鏡の好みは分かれるかも -- 名無しさん (2020-11-23 11 55 02) ジェネリックSuper Rush -- 名無しさん (2020-11-27 14 54 17) 1P正規で鳥+えくは -- 名無しさん (2020-11-27 18 29 56) 途中送信失礼。エクハは開幕抜けたらあとはラストだけなので耐える力があれば許容BPは多そう…?BP23でした。 -- 名無しさん (2020-11-27 18 30 34) ランダムは難化する。正規鏡R乱でどうぞ -- 名無しさん (2021-02-06 21 01 31) CNや同時押しが得意なら、地力E以下よりも早くノマゲできると思う。 -- 名無しさん (2021-02-10 18 17 35) ↑地力Eが全部ノマゲ埋まるより先なら同意、ノマゲE群に1つも付かない状態からだと無理かも -- 名無しさん (2021-02-10 21 58 57) ↑多分それだと二重階段に押し負ける -- 名無しさん (2021-02-11 01 35 27) 1P正規でフルコン。サビ前(?)のCNがめちゃくちゃ素直な配置で降ってくるし、ちょいちょい来る二重階段も超綺麗だから無難に押しやすかった。スコアも出しやすい。 -- 名無しさん (2021-02-16 21 30 16) ガチ割れ引くとプチCN地帯と二重階段が楽になる -- 名無しさん (2021-02-28 16 54 23) ハードはサビまで辿り着けるならチャンスあり。前半も後半も正規か鏡どっちかが当たってるからやりやすいオプションを見つけよう -- 名無しさん (2021-04-26 20 29 11) 初見で2356引いて地力Bくらいに感じたけど固定オプション推奨だったのか -- 名無しさん (2021-07-25 02 29 23) 乱常備の人はどうすれば… -- 名無しさん (2021-07-31 09 30 49) ↑正規系でやればいいだけでは?発言の意図がよくわからない -- 名無しさん (2021-07-31 15 36 28) ↑正規慣れしてないから正規特有の当たり方分からないって意味じゃない?だとしたら正規もちゃんとやろうよって感じではあるけど… -- 名無しさん (2021-07-31 16 33 48) ちょっと二重階段あるとはいえ流石に正規慣れどうの言うまでもなく正規大当たりなので四の五の言わずにやるだけの話。そんなに二重階段やりたくないならガチ割れ粘れってだけ、なんならフルコンでもなければ乱かけて地力でも安定して殴れる -- 名無しさん (2021-07-31 22 31 20) 二重階段の経験は後々中伝のTRIUMPHでもそのまま生きてくるので、そういう意味でも正規超当たりと言える -- 名無しさん (2021-07-31 23 22 58) 二重階段で削られまくる人で、跨ぎCNに抵抗がないならR乱もかなり良い。1P正規で一度も中盤の回復まで辿り着けなかったけど、R乱かけたら一発でハードできた。 -- 名無しさん (2021-10-22 18 29 05) AAAはBeat Radianceより易しい? -- 名無しさん (2021-11-10 08 00 27) CHARGEのノーツレーダー値183くらい?何回かやってたらグラフが紫になってて笑った。地味に脱法曲だったw -- 名無しさん (2021-11-18 22 17 23) 乱の必要がない綺麗な☆12 -- 名無しさん (2022-04-14 01 28 34) ハードまでなら弱いんだけどエクハになるとものすごい難しく感じる。 -- 名無しさん (2022-09-04 23 57 39) 2P正規、☆12で初ノマゲランプが点きました。易ランプは40ぐらい -- 名無しさん (2023-04-04 20 56 24) ずっと正規でやってたけど試しに乱でやってみたら一発で鳥乗った。明確に難化するのは短CN地帯ぐらいなので(しかもガチ割れなら易化まである)、自分みたいに二重階段苦手な人は余裕でお釣り来る -- 名無しさん (2023-04-20 21 56 27) 個人差かと思いますがmosaic、Beat RadianceはマグレでAAA出来る自分のような実力だとこの曲のAAAに届かないどころかAAA-にいくのも難しい感じです。皿複合をしっかり光らせる技術は最低限必要かと思います。 -- 名無しさん (2023-09-17 17 26 46) 最大の難所は57~59小節(中盤難)なのにノマゲDハードEになってるなあ。逆だろ -- 名無しさん (2023-09-17 18 00 11) 恐らく1P鏡2P正規が当たり。 -- 名無しさん (2023-09-17 18 07 08) 名前 コメント
https://w.atwiki.jp/sampleisbest/pages/62.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 コンソール アプリケーション プロジェクト名 lzwdec アプリケーションの種類 コンソール アプリケーション 追加のオプション 空のプロジェクト LZWの勉強用で制限事項、改良の余地多々あり。 参考 GIFフォーマットの詳細 http //www.tohoho-web.com/wwwgif.htm 時雨エノキオプト-アセンブリホール2nd-自作ソフト-GIFデコーダ http //www.geocities.jp/warotarock/asen2ndgif001.html 辞書テーブルを利用しない新LZW法 http //homepage1.nifty.com/uchi/lzw.htm GIF89a Specification http //www.w3.org/Graphics/GIF/spec-gif89a.txt LZW and GIF explained http //www.martinreddy.net/gfx/2d/GIF-comp.txt lzwdec.c #include stdio.h #include stdlib.h // 型定義 typedef unsigned charUCHAR; typedef unsigned intUINT; // 関数プロトタイプ宣言 int LZWDecode(void); int FetchCodeData(int iCodeSize); int AddImageData(int iCode); int AddDicTable(void); int PrintImageData(void); // グローバル変数 static UCHAR*g_pucImageData;// 画像データ static intg_iImageData;// 画像データのサイズ static intg_iImageIndex;// 画像データの指標 static intg_aiDicTable[0x1000];// 辞書テーブル static intg_iDicIndex;// 辞書テーブルの指標 static UCHAR*g_pucCodeData;// コード化データ static intg_iCodeData;// コード化データのサイズ static intg_iCodeIndex;// コード化データの指標 static UCHARg_ucLZWMinimumCodeSize;// 最小コードビット数 static intg_iClearCode;// クリアコード static intg_iEoICode;// 終了コード static intg_iCodeSize;// コードのビット数 int main() { UCHARaucImageData[256 * 256]; UCHARaucCodeData[] = { //0x00, 0x01, 0x04, 0x04// 0 //0x00, 0x01, 0x08, 0x04, 0x10, 0x10// 0 0 0 0 0x00, 0x03, 0xFC, 0x13, 0x48, 0xF0, 0x5F, 0x40// 1 255 1 255 1 255 1 255 }; g_ucLZWMinimumCodeSize = 8; g_iClearCode= 1 g_ucLZWMinimumCodeSize; g_iEoICode= g_iClearCode + 1; g_iCodeSize= g_ucLZWMinimumCodeSize + 1; g_pucImageData= aucImageData; g_iImageData= _countof(aucImageData); g_iImageIndex= 0; FetchCodeData(0); g_pucCodeData= aucCodeData; g_iCodeData= _countof(aucCodeData); g_iCodeIndex= 0; LZWDecode(); PrintImageData(); return 0; } int LZWDecode(void) { intiCode; while (1) { iCode = FetchCodeData(g_iCodeSize); printf("%d\n", iCode); if (iCode 0) { return 1; } if (iCode == g_iClearCode) { // 辞書テーブルのクリア g_iDicIndex = g_iClearCode + 1; g_aiDicTable[g_iDicIndex] = g_iImageIndex; g_iCodeSize = g_ucLZWMinimumCodeSize + 1; continue; } if (iCode == g_iEoICode) { break; } if (g_iDicIndex iCode) { fprintf(stderr, "error StringTable %u %d\n", g_iDicIndex, iCode); return -1; } AddImageData(iCode); AddDicTable(); if ((1 g_iCodeSize) = g_iDicIndex) { g_iCodeSize++; } } return 0; } // コードの取得 // 戻り値:-1=失敗 0以上=コード int FetchCodeData(int iCodeSize) { static UINTuiBits; static intiBits; intiCode; if (iCodeSize = 0) { uiBits= 0; iBits= 0; return -1; } while (iBits iCodeSize) { if (g_iCodeData = g_iCodeIndex) { return -1; } uiBits |= g_pucCodeData[g_iCodeIndex++] iBits; iBits += 8; } iCode = uiBits ((1 iCodeSize) - 1); uiBits = iCodeSize; iBits -= iCodeSize; return iCode; } // 文字データの追加 int AddImageData(int iCode) { intiEnd; inti; if (iCode g_iClearCode) { if (g_iImageData = g_iImageIndex) { return -1; } g_pucImageData[g_iImageIndex++] = iCode; return 0; } iEnd = g_aiDicTable[iCode]; for (i = g_aiDicTable[iCode - 1]; i = iEnd; i++) { if (g_iImageData = g_iImageIndex) { return -1; } g_pucImageData[g_iImageIndex++] = g_pucImageData[i]; } return 0; } // 辞書テーブルの追加 int AddDicTable(void) { if (_countof(g_aiDicTable) = ++g_iDicIndex) { return -1; } g_aiDicTable[g_iDicIndex] = g_iImageIndex; return 0; } // 文字データの出力 int PrintImageData(void) { inti; for (i = 0; i g_iImageIndex; i++) { printf("%d %u\n", i, g_pucImageData[i]); } return 0; } 出力 256 1 255 258 260 255 257 0 1 1 255 2 1 3 255 4 1 5 255 6 1 7 255
https://w.atwiki.jp/tracking_quizshow/pages/102.html
問題 問題画像 問題文 次の暗号を解読してください 回答 解説 補足 Big/bq075と同じ問題です
https://w.atwiki.jp/tracking_quizshow/pages/103.html
問題 問題画像 問題文 次の暗号を解読してください。3 FYM5HG XL6IV7 ? 回答 BUQ9S 解説 ルーレット(アメリカンスタイル)のホイール配置から 01D-O3FYM5HWK7BUQ9S02EZN4GXL6IVJ8CTPAR 補足 Big/bq077と同じ問題です
https://w.atwiki.jp/drsparip/pages/27.html
(ジャケット) TITLE Gimme a Big Beat ARTIST kors k GENRE BIGROOM? BPM ??? EVENT - DIFFICULTY かんたん ふつう 一人プレー 4 9 二人プレー 4 9 解説 jubeatからの移植曲 最後はひたすらランニングマン 出現・アンロック条件 なんだっけ? 譜面動画 かんたん(一人プレー) ふつう(一人プレー) かんたん(二人プレー) ふつう(二人プレー)
https://w.atwiki.jp/note01/pages/15.html
C言語について。 Visual Studio2013を使っていて、C++でプログラミングをしています。 華氏温度を0度から100度までの間で入力すると、摂氏温度に変換して表示し、 摂氏温度がマイナスになる場合は氷点下であることを表示するプログラムを 作成したのですが、実行するとこのようなエラーが出てしまいます。 解決方法がわかる方がいらっしゃいましたら、教えていただければ嬉しいです。 よろしくおねがいします。 以下、プログラム #define _USE_MATH_DEFINES #include stdio.h #include math.h int main(void){ double x, C; printf("華氏温度xを入力してください\n"); printf("x="); scanf_s("%5.3f", x); if (32 = x x = 100){ (double)C = (5.0 / 9.0)*((double)x - 32); printf("摂氏温度Cは%5.3fです\n", C); if (0 = x x 32){ printf("摂氏温度Cは氷点下です"); } } else{ printf("華氏温度は0≦x≦100で入力してください\n"); } return 0; } 出典: http //detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11128476941 http //megalodon.jp/2014-0507-0049-32/detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11128476941 入力:華氏温度x、小数、範囲は0から100 出力:摂氏温度に変換したx、小数 scanfは桁数を指定できない double型の入力には、変換指定子lfを用いるfではない (double型の出力に、変換指定子fを用いているのは良い。lfを使用するのよりも適切。) 解答例 #include stdio.h #include math.h int main(void) { double x, C; printf("華氏温度xを入力してください\n"); printf("x="); scanf("%lf", x); if (0.0 = x x = 100.0) { C = (5.0 / 9.0) * (x - 32); printf("摂氏温度Cは%5.3fです\n", C); } else if (x 0.0) { printf("摂氏温度Cは氷点下です\n"); } else{ printf("華氏温度は 0 = x = 100 で入力してください\n"); } return 0; } C言語のプログラミングです。 課題で温度を、摂氏で入力し、華氏に変換し、表示するプログラムを作ってるんですが、 #include stdio.h main() { double fahr, celsius, number, ch; printf("Input temperature? "); number=0; ch = getchar(); while(ch != \n ){ if( 0 = ch ch = 9 ){ number = number * 10; number = number + (ch - 0 ); } ch = getchar(); } celsius = number; fahr = (9.0/5.0) * celsius + 32.0; printf("Celsius %2.0f is same to Fahrenheit %6.1f\n",number ,fahr ); } を作ったのですが 各変数について、その役割や目的を、もう一度見直してください。 そして、それに相応しいと思われるデータ型を考えてください。 また、摂氏温度の扱い(温度なので、整数とは限らない) と言われましたどのように訂正すればいいかわかりません。 教えてください。 出典: http //detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1097849880 http //megalodon.jp/2014-0507-0050-23/detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1097849880 変数chは、文字を格納するのに用いています。ですからデータ型はintが相応しいでしょう。摂氏温度は、整数であると仮定していますが、小数であることもあるということでしょう。 chはint型でないといけない(文字を格納するから) 入力される温度が負のときが対応できていない int main(void) と書いた方がよい(cf. 5.1.2.2.1 プログラム開始処理) 解答例 #include stdio.h int main(void) { double celsius; printf("Enter Celsius temperature "); scanf("%lf", celsius); printf("%3.2f degrees Celsius is equivalent to %3.2f degrees Fahrenheit\n", celsius, (9.0 / 5.0) * celsius + 32.0); return 0; } 関数の問題です #include stdio.h int main(void) { int w, sita, ue, kizami = 0; double f; printf("摂氏温度から華氏温度に換算する場合は1を、\n華氏温度から摂氏温度に換算する場合は2を入力してください\n"); scanf("%d", w); if(w==1){ printf("何度から何度までのものを作成しますか?\n");//華氏温度の場合 printf("下の温度 "); scanf("%d", sita); printf("上の温度 "); scanf("%d", ue); printf("何度刻みですか?"); scanf("%d", kizami); printf("摂氏\t華氏\n"); for(;sita =ue;){ f=(9.0/5.0)*sita+32; printf("%d\t%.1lf\n",sita,f); sita+=kizami; } } else if (w==2){ printf("何度から何度までのものを作成しますか?\n");//摂氏温度の場合 printf("下の温度 "); scanf("%d", sita); printf("上の温度 "); scanf("%d", ue); printf("何度刻みですか?"); scanf("%d", kizami); printf("摂氏\t華氏\n"); for(;sita =ue;){ f=(5.0/9.0)*(sita-32); printf("%d\t%.1lf\n",sita,f); sita+=kizami; } } return(0); } このプログラミングを関数を使って回答お願いします。 出典 http //detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1387095673 http //megalodon.jp/2014-0507-0051-29/detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1387095673 摂氏温度と華氏温度の両方の変換、関数を使用 何を関数にするかが重要です 関数にする目的のひとつは、再利用しやすくすることです 摂氏温度と華氏温度の変換は、他でも利用できると考えられるので、関数にする価値があります 解答例 #include stdio.h double celsius2fahrenheit(double celsius) { return (9.0 / 5.0) * celsius + 32.0; } double fahrenheit2celsius(double fahrenheit) { return (5.0 / 9.0) * (fahrenheit - 32.0); } int main(void) { int mode; int min, max, res, i; printf("摂氏温度から華氏温度に換算する場合は1を、\n" "華氏温度から摂氏温度に換算する場合は2を入力してください\n"); scanf("%d", mode); if (mode 1 || 2 mode) { printf("1か2を入力して下さい\n"); } printf("何度から何度までのものを作成しますか?\n"); printf("下の温度 "); scanf("%d", min); printf("上の温度 "); scanf("%d", max); printf("何度刻みですか?"); scanf("%d", res); if (mode == 1) { printf("摂氏\t華氏\n"); for (i = min; i = max; i += res) { printf("%3d\t%3.1f\n", i, celsius2fahrenheit(i)); } } else if (mode == 2) { printf("摂氏\t華氏\n"); for (i = min; i = max; i += res) { printf("%4d\t%3.1f\n", i, celsius2fahrenheit(i)); } } return 0; } 摂氏温度から華氏温度への表は-50度から50度まで10度ごとに、 華氏温度から摂氏温度への表は-60度から140度まで20度ごとに表示する。 両者は、何度で一致するか。 #include stdio.h int main(void) { int celsius, fahrenheit; printf("摂氏\t華氏\n"); for (celsius = -50; celsius = 50; celsius += 10) { printf("%3d\t%3.1f\n", celsius, (9.0 / 5.0) * celsius + 32.0); } printf("\n"); printf("摂氏\t華氏\n"); for (fahrenheit = -60; fahrenheit = 140; fahrenheit += 20) { printf("%3d\t%3.1f\n", fahrenheit, (5.0 / 9.0) * (fahrenheit - 32.0)); } return 0; } プログラミングです。 回答お願いします! 摂氏温度Cと華氏温度Fと絶対温度Zの関係を求めよ。 (ヒント)F=9/5 C+32、Z=C+273.16 プログラムを教えてください m(__)m 出典: http //detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1197467166 http //megalodon.jp/2014-0507-0053-22/detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1197467166 解答例 #include stdio.h int main(void) { double cel; printf("摂氏温度="); scanf("%lf", cel); printf("摂氏温度=%.2f, 華氏温度=%.2f, 絶対温度=%.2f\n", cel, 9.0 * cel / 5.0 + 32.0, cel + 273.16); return 0; } c言語のプログラミングの課題で配列の課題が出たのですがわからなくて困っています。 問題は次のようです。「1年分の各月の平均気温を配列に格納し(プログラム内で初期値として与えてよい),各データとそれらの平均値,最大値,最小値を表示するプログラムを作成せよ. ただし,格納するデータは摂氏のみ.データの表示は摂氏と華氏の双方で表示すること. (この問題では,平均値は整数でよい(切り捨て,切り上げ,四捨五入いずれも可).月平均気温は適当でよい.)」という内容です。この問題のプログラムをつくってほしいです。実行例は下の画像にあります。これは自分でやった途中までのプログラムです。 #define _CRT_SEQURE_NO_WORNINGS #include stdio.h int main(void) { int max,min;//最高最低温度// int st;//合計// int date[12]={5,0,10,17,20,25,27,30,27,20,15,8}; int i; float ave; min = max = date[0]; st = 0; for(i=0;i 12;i++) { printf("%d月 %d",i+1,date[i]); printf("\n"); date[i]=0; } printf("----------\n"); for(i=0;i 12;i++) { date[i]=0; if(max date[i]){ max = date[i]; } st=st+date[i]; } printf("年最高:%d\n",max); for(i=0;i 12;i++) { if(date[i] min) { min = date[i]; } } printf("年平均:%d\n",ave); ave=st/12; printf("年最低:%d\n",min); return 0;//終了する } 中途半端で申し訳ないですがお願いします。 できればなぜそうプログラムすればいいのかまで教えていただきたいです。 出典: http //detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1489030534 floatでなくてdoubleでいいのではないでしょうか 暗黙の型変換よりも明示的型変換 (int) のほうがよいです 解答例 #include stdio.h int main(void) { int max, min, sum, ave, fah; int date[12] = {5,0,10,17,20,25,27,30,27,20,15,8}; int i; min = max = date[0]; sum = 0; for (i = 0; i 12; i++) { fah = (int)((9.0 / 5.0) * date[i] + 32.0); printf(" %2d月 %2d(%2d)\n", i + 1, date[i], fah); } printf("--------------\n"); for (i = 0; i 12; i++) { if (max date[i]) { max = date[i]; } if (date[i] min) { min = date[i]; } sum += date[i]; } fah = (int)((9.0 / 5.0) * max + 32); printf("年最高 %2d(%2d)\n", max, fah); ave = (int)(sum / 12.0); fah = (int)((9.0 / 5.0) * ave + 32); printf("年平均 %2d(%2d)\n", ave, fah); fah = (int)((9.0 / 5.0) * min + 32); printf("年最低 %2d(%2d)\n", min, fah); return 0; } -
https://w.atwiki.jp/tracking_quizshow/pages/96.html
問題 問題画像 問題文 作品名を解読してださい。0dhoaynzg pxcmwqielvjtrubksf179317628618943179187628729524628179187351作者:TERAGRAM作品名:781294816781294425781254836369349 回答 解説 補足 Big/bq074と同じ問題です
https://w.atwiki.jp/sampleisbest/pages/151.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 プロジェクト プロジェクト名 spticdda アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト 文字セット Unicode Microsoft DirectX SDK (February 2010) Windows Driver Kit Version 7.1.0 参考 DirectSound wavファイルから音を抽出 spticdda.cpp /* [構成プロパティ]-[VC++ ディレクトリ] [インクルード ディレクトリ] C \Program Files\Microsoft DirectX SDK (February 2010)\Include C \WinDDK\7600.16385.1\src\storage\tools\spti [ライブラリ ディレクトリ] C \Program Files\Microsoft DirectX SDK (February 2010)\Lib\x86 Unicode文字セット */ #pragma comment(lib, "dsound.lib") #pragma comment(lib, "dxguid.lib") //#include Windows.h #include tchar.h #include dsound.h #include ntddscsi.h #include spti.h #include stddef.h #include "resource.h" #define REVWORD(w) (((w 8) 0xff00)|((w 8) 0xff)) #define REVDWORD(dw) (((dw 24) 0xff000000)|((dw 8) 0xff0000)|((dw 8) 0xff00)|((dw 24) 0xff)) #define COMRELEASE(obj) if(obj){obj- Release();obj=NULL;} #define NOTIFYEVENTS 2 #define CDDASECT 2352 #define READSECT 15 struct READTOC { WORD wLen; BYTE byStartTrack; BYTE byEndTrack; struct TRACKDESC { BYTE d0; BYTE data; BYTE byTrack; BYTE d1; DWORD dwLBA; } td[100]; }; // 関数プロトタイプ宣言 INT_PTR CALLBACK MainDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); void OnInitDialog(HWND hDlg); int TrackList(HWND hWnd, TCHAR cDrv); int ReadToc(TCHAR cDrv); void OnPlay(HWND hDlg); int Play(TCHAR cDrive, UINT uTrack, HWND hWnd); int InitDirectSound(HWND hWnd); int ReadBuf(DWORD dwStartOffset, DWORD dwWriteSize); DWORD ExecCommand(HANDLE hDev, PUCHAR pucCdb, UCHAR ucCdbLen, PVOID pvData, ULONG ulDataLen); // 外部変数構造体 static struct { BOOL bPlay; // CD-DA HANDLE hDev; BYTE byToc[sizeof(READTOC)+0xf]; READTOC *ptoc; DWORD dwStartAddr; DWORD dwEndAddr; DWORD dwLBA; // DirectSound LPDIRECTSOUND8 pDS; LPDIRECTSOUNDBUFFER pPri; LPDIRECTSOUNDBUFFER pSec; LPDIRECTSOUNDNOTIFY pNotify; HANDLE hEvent[NOTIFYEVENTS]; DSBPOSITIONNOTIFY dspn[NOTIFYEVENTS]; DWORD dwBufferBytes; DWORD dwEoe; } g; //============================================================================== int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) { DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, MainDlgProc); return 0; } //------------------------------------------------------------------------------ INT_PTR CALLBACK MainDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { INT_PTR nRet = TRUE;// メッセージを処理した switch (uMsg) { case WM_COMMAND switch (LOWORD(wParam)) { case IDC_DEVICELIST { TCHAR szBuf[3+1]; HWND hWnd = GetDlgItem(hDlg, IDC_DEVICELIST); LRESULT lr = SendMessage(hWnd, CB_GETCURSEL, 0, 0); SendMessage(hWnd, CB_GETLBTEXT, lr, (LPARAM)szBuf); if (szBuf[0]) { TrackList(hDlg, szBuf[0]); } } break; case IDC_PLAY if (g.bPlay) { g.bPlay = FALSE; break; } g.bPlay = TRUE; OnPlay(hDlg); g.bPlay = FALSE; break; case IDC_EXIT if (g.bPlay == FALSE) { SendMessage(hDlg, WM_CLOSE, 0, 0); } break; } break; case WM_CLOSE EndDialog(hDlg, 0); break; case WM_INITDIALOG g.hDev = INVALID_HANDLE_VALUE; OnInitDialog(hDlg); break; case WM_DESTROY if (g.hDev != INVALID_HANDLE_VALUE) { CloseHandle(g.hDev); } break; default nRet = FALSE;// メッセージを処理しなかった } return nRet; } //------------------------------------------------------------------------------ void OnInitDialog(HWND hDlg) { TCHAR szBuf[26*4+1]; LPCTSTR pszDrv; HWND hWnd; DWORD dwr; UINT ur; // CD-ROMドライブ一覧 hWnd = GetDlgItem(hDlg, IDC_DEVICELIST); dwr = GetLogicalDriveStrings(_countof(szBuf) - 1, szBuf); for (pszDrv = szBuf; *pszDrv; pszDrv += 4) { ur = GetDriveType(pszDrv); if (ur == DRIVE_CDROM) { SendMessage(hWnd, CB_ADDSTRING, 0, (LPARAM)pszDrv); } } SendMessage(hWnd, CB_SETCURSEL, 0, 0); SendMessage(hWnd, CB_GETLBTEXT, 0, (LPARAM)szBuf); TrackList(hDlg, szBuf[0]); } //------------------------------------------------------------------------------ int TrackList(HWND hDlg, TCHAR cDrv) { TCHAR szBuf[64]; HWND hWnd; BYTE by; hWnd = GetDlgItem(hDlg, IDC_TRACKLIST); SendMessage(hWnd, CB_RESETCONTENT, 0, 0); if (ReadToc(cDrv)) { return -1; } for (by = 0; by g.ptoc- byEndTrack; by++) { DWORD dwStartAddr= REVDWORD(g.ptoc- td[by].dwLBA); DWORD dwEndAddr= REVDWORD(g.ptoc- td[by+1].dwLBA) - 1; DWORD dwLen= dwEndAddr - dwStartAddr + 1; _stprintf_s(szBuf, _T("%2u, LBA[%6u-%6u], Len[%6u]"), by+1, dwStartAddr, dwEndAddr, dwLen); SendMessage(hWnd, CB_ADDSTRING, 0, (LPARAM)szBuf); } SendMessage(hWnd, CB_SETCURSEL, 0, 0); return 0; } //------------------------------------------------------------------------------ int ReadToc(TCHAR cDrv) { TCHAR szDev[] = _T("\\\\.\\@ "); UCHAR ucCdb[16]; DWORD dwr; // デバイスのオープン szDev[4] = cDrv; if (g.hDev != INVALID_HANDLE_VALUE) { CloseHandle(g.hDev); } g.hDev = CreateFile(szDev, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); if (g.hDev == INVALID_HANDLE_VALUE) { return -1; } // TOCの読み込み g.ptoc = (READTOC *)(((UINT_PTR)g.byToc + 0xf) ~0xf); ZeroMemory(g.ptoc, sizeof *g.ptoc); ZeroMemory(ucCdb, sizeof ucCdb); ucCdb[0] = SCSIOP_READ_TOC; ucCdb[6] = 1; *(PWORD)(ucCdb + 7) = REVWORD(sizeof *g.ptoc); dwr = ExecCommand(g.hDev, ucCdb, 10, g.ptoc, sizeof *g.ptoc); if (dwr == 0) { return -1; } return 0; } //------------------------------------------------------------------------------ void OnPlay(HWND hDlg) { TCHAR szBuf[64]; TCHAR cDrive; UINT uTrack; HWND hWnd; LRESULT lr; // ドライブ hWnd = GetDlgItem(hDlg, IDC_DEVICELIST); lr = SendMessage(hWnd, CB_GETCURSEL, 0, 0); SendMessage(hWnd, CB_GETLBTEXT, lr, (LPARAM)szBuf); cDrive = szBuf[0]; if (!cDrive) { return; } // トラック hWnd = GetDlgItem(hDlg, IDC_TRACKLIST); lr = SendMessage(hWnd, CB_GETCURSEL, 0, 0); SendMessage(hWnd, CB_GETLBTEXT, lr, (LPARAM)szBuf); szBuf[2] = _T( \0 ); uTrack = _ttoi(szBuf); if (99 uTrack) { return; } Play(cDrive, uTrack, hDlg); } //------------------------------------------------------------------------------ int Play(TCHAR cDrive, UINT uTrack, HWND hWnd) { int iRet = -1;// 失敗 // トラックチェック if (g.ptoc- td[uTrack-1].data 0x04) {// データトラック goto Exit; } // トラックLBA g.dwStartAddr= REVDWORD(g.ptoc- td[uTrack-1].dwLBA); g.dwEndAddr= REVDWORD(g.ptoc- td[uTrack].dwLBA) - 1; // DirectSoundの準備 if (InitDirectSound(hWnd)) { goto Exit; } // 再生 g.dwLBA = g.dwStartAddr; g.dwEoe = -1; if (ReadBuf(0, g.dwBufferBytes)) { goto Exit; } HRESULT hr; hr = g.pSec- SetCurrentPosition(0); hr = g.pSec- Play(0, 0, DSBPLAY_LOOPING); DWORD dwEventOffset = WaitForMultipleObjects(NOTIFYEVENTS, g.hEvent, FALSE, INFINITE); while (g.bPlay) { dwEventOffset = WaitForMultipleObjects(NOTIFYEVENTS, g.hEvent, FALSE, INFINITE); dwEventOffset -= WAIT_OBJECT_0; if (dwEventOffset == g.dwEoe) { break; } if (g.dwEoe NOTIFYEVENTS) { continue; } DWORD dwStartOffset; DWORD dwWriteSize; if (dwEventOffset) { dwStartOffset= g.dspn[dwEventOffset-1].dwOffset; dwWriteSize= g.dspn[dwEventOffset].dwOffset - dwStartOffset; } else { dwStartOffset= g.dspn[NOTIFYEVENTS-1].dwOffset; dwWriteSize= g.dwBufferBytes - dwStartOffset; } if (ReadBuf(dwStartOffset, dwWriteSize)) { goto Exit; } if (g.dwEndAddr = g.dwLBA) { g.dwEoe = dwEventOffset; } // メッセージ MSG msg; while (PeekMessage( msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage( msg); DispatchMessage( msg); } } hr = g.pSec- Stop(); iRet = 0; Exit COMRELEASE(g.pNotify); COMRELEASE(g.pSec); COMRELEASE(g.pPri); COMRELEASE(g.pDS); return iRet; } //------------------------------------------------------------------------------ int InitDirectSound(HWND hWnd) { HRESULT hr; //---------------------------------------------------------------------- // DirectSoundの初期化 hr = DirectSoundCreate8( DSDEVID_DefaultPlayback, g.pDS, NULL); if (FAILED(hr)) { return -1; } // 協調レベルの設定 hr = g.pDS- SetCooperativeLevel(hWnd, DSSCL_PRIORITY); if (FAILED(hr)) { return -1; } //---------------------------------------------------------------------- DSBUFFERDESC bd; WAVEFORMATEX wfx; ZeroMemory( wfx, sizeof wfx); wfx.wFormatTag= WAVE_FORMAT_PCM; wfx.nChannels= 2; wfx.nSamplesPerSec= 44100; wfx.nAvgBytesPerSec= 44100 * 2 * 2; wfx.nBlockAlign= 2 * 2; wfx.wBitsPerSample= 16; // プライマリバッファの作成 ZeroMemory( bd, sizeof bd); bd.dwSize= sizeof bd; bd.dwFlags= DSBCAPS_PRIMARYBUFFER | DSBCAPS_CTRLVOLUME | DSBCAPS_CTRLPAN; hr = g.pDS- CreateSoundBuffer( bd, g.pPri, NULL); if (FAILED(hr)) { return -1; } // プライマリバッファのフォーマット指定 hr = g.pPri- SetFormat( wfx); if (FAILED(hr)) { return -1; } // セカンダリバッファの作成 ZeroMemory( bd, sizeof bd); bd.dwSize= sizeof bd; bd.lpwfxFormat= wfx; bd.dwFlags= DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_CTRLPOSITIONNOTIFY | DSBCAPS_GLOBALFOCUS; bd.dwBufferBytes = 44100 * 2 * 2 * 2;// 2秒 hr = g.pDS- CreateSoundBuffer( bd, g.pSec, NULL); if (FAILED(hr)) { return -1; } g.dwBufferBytes = bd.dwBufferBytes; //---------------------------------------------------------------------- // イベント hr = g.pSec- QueryInterface(IID_IDirectSoundNotify, (LPVOID *) g.pNotify); if (FAILED(hr)) { return -1; } for (int n = 0; n NOTIFYEVENTS; n++) { g.hEvent[n] = CreateEvent(NULL, FALSE, FALSE, NULL);// CloseHandle g.dspn[n].dwOffset = (n * bd.dwBufferBytes / NOTIFYEVENTS); g.dspn[n].hEventNotify = g.hEvent[n]; } hr = g.pNotify- SetNotificationPositions(NOTIFYEVENTS, g.dspn); if (FAILED(hr)) { return -1; } return 0; } //------------------------------------------------------------------------------ // セカンダリバッファへの読み込み int ReadBuf(DWORD dwOffset, DWORD dwBytes) { BYTE byBuf[CDDASECT * READSECT + 0xf];// パラグラフ境界 PBYTE pbyBuf = (PBYTE)(((UINT_PTR)byBuf + 0xf) ~0xf); UCHAR ucCdb[16]; ZeroMemory(pbyBuf, CDDASECT * READSECT); ZeroMemory(ucCdb, sizeof ucCdb); ucCdb[0] = 0xbe;// SCSIOP_READ_CD ucCdb[9] = 0x10; // IDirectSoundBuffer LPVOID pvAudioPtr[2]; DWORD dwAudioBytes[2]; HRESULT hr; hr = g.pSec- Lock(dwOffset, dwBytes, pvAudioPtr[0], dwAudioBytes[0], pvAudioPtr[1], dwAudioBytes[1], 0); DWORD dwReadSect = dwBytes / CDDASECT; for (DWORD dwSect = 0; (dwSect dwReadSect) (g.dwLBA g.dwEndAddr); ) { DWORD dwReadSize; if (g.dwLBA + READSECT g.dwEndAddr) { dwReadSize = g.dwEndAddr - g.dwLBA; g.dwEoe = 0; } else { dwReadSize = dwReadSect - dwSect; if (READSECT dwReadSize) { dwReadSize = READSECT; } } *(PDWORD)(ucCdb + 2) = REVDWORD(g.dwLBA); ucCdb[8] = (UCHAR)dwReadSize; DWORD dwr = ExecCommand(g.hDev, ucCdb, 12, pbyBuf, CDDASECT * READSECT); if (dwr == 0) { return -1; } DWORD dwPos = CDDASECT * dwSect; memcpy_s((PBYTE)pvAudioPtr[0] + dwPos, dwAudioBytes[0] - dwPos, pbyBuf, CDDASECT * dwReadSize); dwSect += dwReadSize; g.dwLBA += dwReadSize; } hr = g.pSec- Unlock(pvAudioPtr[0], dwAudioBytes[0], pvAudioPtr[1], dwAudioBytes[1]); return 0; } //------------------------------------------------------------------------------ DWORD ExecCommand(HANDLE hDevice, PUCHAR pucCdb, UCHAR ucCdbLen, PVOID pvData, ULONG ulDataLen) { SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER swb; DWORD dwBytesReturned; BOOL br; ZeroMemory( swb, sizeof swb); swb.sptd.Length= sizeof swb.sptd; // swb.sptd.CdbLength= ucCdbLen; swb.sptd.SenseInfoLength= sizeof swb.ucSenseBuf; swb.sptd.DataIn= SCSI_IOCTL_DATA_IN; swb.sptd.DataTransferLength= ulDataLen; swb.sptd.TimeOutValue= 10;// 秒 swb.sptd.DataBuffer= pvData; swb.sptd.SenseInfoOffset = offsetof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER, ucSenseBuf); memcpy_s( swb.sptd.Cdb, sizeof swb.sptd.Cdb, pucCdb, ucCdbLen); br = DeviceIoControl( hDevice, IOCTL_SCSI_PASS_THROUGH_DIRECT, swb, sizeof swb,// In swb, sizeof swb,// Out dwBytesReturned, NULL); if (br == FALSE) { return 0; } return dwBytesReturned; } resource.h #define IDD_MAIN100 #define IDC_STATIC-1 #define IDC_EXIT1000 #define IDC_DEVICELIST1001 #define IDC_TRACKLIST1002 #define IDC_PLAY1003 spticdda.rc // resource script #include windows.h #include "resource.h" IDD_MAIN DIALOGEX 100, 100, 159, 53 STYLE WS_POPUPWINDOW | WS_MINIMIZEBOX EXSTYLE WS_EX_APPWINDOW CAPTION "spticdda" FONT 9, "MS Pゴシック" BEGIN DEFPUSHBUTTON"終了",IDC_EXIT,111,37,46,14 LTEXT"デバイス",IDC_STATIC,2,3,27,12,SS_CENTERIMAGE COMBOBOXIDC_DEVICELIST,29,3,128,215, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT"トラック",IDC_STATIC,2,20,27,12,SS_CENTERIMAGE COMBOBOXIDC_TRACKLIST,29,20,128,230, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP PUSHBUTTON"再生",IDC_PLAY,60,37,46,14 END
https://w.atwiki.jp/gamemusicbest100/pages/912.html
大番長 -Big Bang Age- 機種:PC 作曲者:Shade 発売元:アリスソフト 発売年:2004 概要 『大悪司』に続く、大シリーズ2作目。 「番長もの」をモチーフにした地域制圧シミュレーション。 収録曲 曲名 補足 順位 Dash! To Truth 作詞:HIRO歌:ブリジット本田オープニング ゲームソング337位第2回ゲームソング377位アリスソフト127位 Make me funky! Advance i Advance ii アリスソフト139位 Dash! To Battle i Dash! To Battle ii 通常戦闘:全国編 第4回227位第5回603位パソコンゲーム192位アリスソフト12位 Confront the enemy i Confront the enemy ii Short Loops i Sensouji in P.G.G P.G.G Transilvania Golokuin Terrible Beat i Terrible Beat ii Terrible Beat iii Terrible Beat iv アリスソフト72位 Short Loops ii Lovers Time i Lovers Time ii Comical? Short Loops iii Holly Frame アリスソフト122位 Scal Serpent アリスソフト48位 Big Bang Age アリスソフト74位 Kamui i Kamui ii Kamui iii Kamui iv (The Last Battle) Take me to the another world アリスソフト132位 サウンドトラック Alicesoft Sound Album Vol.04 大番長 OPムービー